home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / laplace / laplace.f < prev    next >
Text File  |  1993-03-23  |  1KB  |  50 lines

  1.       PROGRAM LAPLACE
  2.       REAL F(:,:), DF(:,:)
  3.       REAL HF(:,:)
  4.       LOGICAL CMASK (:,:)
  5.       INTEGER MAXX, MAXY
  6.       REAL FMAX
  7.       INTEGER ITER
  8. c     read in sizes 
  9. c
  10.       PRINT *,'MAXX = (z.B. 64) '
  11.       READ *,MAXX
  12.       PRINT *,'MAXY = (z.B. 64) '
  13.       READ *,MAXY
  14.       ALLOCATE (F(MAXX,MAXY), DF(1:MAXX,MAXY))
  15.       ALLOCATE (HF(MAXX,1:MAXY))
  16.       ALLOCATE (CMASK(MAXX,1:MAXY))
  17. C
  18.       CMASK = .FALSE.
  19.       CMASK (2:MAXX-1,2:MAXY-1) = .TRUE.
  20.       F = 2.
  21.       F(:,MAXY) = 1.
  22.       WHERE (CMASK)
  23.           F = 0.0
  24.       ENDWHERE
  25.       ITER = 0
  26.       FMAX = 1
  27.       DO WHILE (FMAX .gt. 0.001)
  28.          ITER = ITER + 1
  29.          HF = CSHIFT (F,1,1)
  30.          DF = CSHIFT (F,1,-1)
  31.          HF = HF + DF
  32.          DF = CSHIFT (F,2,1)
  33.          HF = HF + DF
  34.          DF = CSHIFT (F,2,-1)
  35.          HF = (HF + DF) * 0.25
  36.          DF = 0
  37.          WHERE (CMASK)
  38.             DF = HF - F
  39.             F  = F + DF
  40.          ENDWHERE
  41.          DF = ABS(DF)
  42.          FMAX = MAXVAL (DF)
  43.          PRINT *,'Iteration ',ITER,'  Max = ',FMAX
  44.       END DO
  45.       PRINT *, ITER, ' Iterationen benoetigt'
  46.       DEALLOCATE (CMASK, HF, DF, F)
  47.       END 
  48.  
  49.